home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / muds / lpmud312.tar / lpmud312 / object.h < prev    next >
C/C++ Source or Header  |  1991-10-31  |  3KB  |  69 lines

  1. /*
  2.  * Definition of an object.
  3.  * If the object is inherited, then it must not be destructed !
  4.  *
  5.  * The reset is used as follows:
  6.  * 0: There is an error in the reset() in this object. Never call it again.
  7.  * 1: Normal state.
  8.  * 2 or higher: This is an interactive player, that has not given any commands
  9.  *        for a number of reset periods.
  10.  */
  11.  
  12. #define O_HEART_BEAT        0x01  /* Does it have an heart beat ? */
  13. #define O_IS_WIZARD        0x02  /* Is it a wizard player.c ? */
  14. #define O_ENABLE_COMMANDS    0x04  /* Can it execute commands ? */
  15. #define O_CLONE            0x08  /* Is it cloned from a master copy ? */
  16. #define O_DESTRUCTED        0x10  /* Is it destructed ? */
  17. #define O_SWAPPED        0x20  /* Is it swapped to file */
  18. #define O_ONCE_INTERACTIVE    0x40  /* Has it ever been interactive ? */
  19. #define O_APPROVED        0x80  /* Is std/object.c inherited ? */
  20. #define O_RESET_STATE        0x100 /* Object in a 'reset':ed state ? */
  21. #define O_WILL_CLEAN_UP        0x200 /* clean_up will be called next time */
  22.  
  23. struct object {
  24.     unsigned short flags;    /* Bits or'ed together from above */
  25.     short total_light;
  26.     int next_reset;        /* Time of next reset of this object */
  27.     int time_of_ref;        /* Time when last referenced. Used by swap */
  28.     int ref;            /* Reference count. */
  29. #ifdef DEBUG
  30.     int extra_ref;        /* Used to check ref count. */
  31. #endif
  32.     long swap_num;        /* Swap file offset. -1 is not swapped yet. */
  33.     struct program *prog;
  34.     char *name;
  35.     struct object *next_all, *next_inv, *next_heart_beat, *next_hash;
  36.     struct object *contains;
  37.     struct object *super;        /* Which object surround us ? */
  38.     struct object *shadowing;        /* Is this object shadowing ? */
  39.     struct object *shadowed;        /* Is this object shadowed ? */
  40.     struct interactive *interactive;    /* Data about an interactive player */
  41.     struct sentence *sent;
  42.     struct wiz_list *user;        /* What wizard defined this object */
  43.     struct wiz_list *eff_user;        /* Used for permissions */
  44.     struct object *next_hashed_living;
  45.     char *living_name;            /* Name of living object if in hash */
  46.     struct svalue variables[1];        /* All variables to this program */
  47.     /* The variables MUST come last in the struct */
  48. };
  49.  
  50. extern struct object *load_object PROT((char *, int)),
  51.         *find_object PROT((char *));
  52. extern struct object *get_empty_object(), *find_object PROT((char *)),
  53.     *find_object2 PROT((char *));
  54. extern struct object *current_object, *command_giver;
  55.  
  56. extern struct object *obj_list;
  57. extern struct object *obj_list_destruct;
  58.  
  59. struct value;
  60. void remove_destructed_objects(), save_object PROT((struct object *, char *)),
  61.     move_object PROT((struct object *, struct object *)),
  62.     tell_object PROT((struct object *, char *)),
  63.     tell_npc PROT((struct object *, char *)),
  64.     add_ref PROT((struct object *, char *)),
  65.     free_object PROT((struct object *, char *)),
  66.     reference_prog PROT((struct program *, char *));
  67.  
  68. int restore_object PROT((struct object *, char *));
  69.